---
title: Объёмный тетрис
description: Общеобразовательная игра в широком смысле этого слова. В процессе изучения языков программирования рекомендуется сначала написать свою версию и потом...
sections: [Логическая игра,Экспериментальный интерфейс]
tags: [javascript,онлайн,canvas,игра,классика,головоломка,геометрия,матрица,графика,квадрат,куб,3д,трёхмерный]
scripts: [/js/classes-point-cube.js,/js/tetris-figures.js,/js/tetris-model.js,/js/tetris-controller.js,/js/tetris-view.js]
styles: [/css/pomodoro1.css]
canonical_url: /ru/2023/01/21/volumetric-tetris.html
url_translated: /en/2023/01/22/volumetric-tetris.html
title_translated: Volumetric tetris
date: 2023.01.21
---

Общеобразовательная игра в широком смысле этого слова. В процессе изучения языков программирования
рекомендуется сначала написать свою версию и потом использовать её для демонстрации и тестирования
другого программного обеспечения или оборудования. Трёхмерный интерфейс написан на JavaScript Canvas
— логика самой игры двухмерная. Дополнительные внешние библиотеки не используются.

Описание алгоритма графики: [Вращаем куб в пространстве]({{ '/ru/2023/01/10/spinning-cube-in-space.html' | relative_url }}).

{% include heading.html text="Экспериментальный интерфейс" hash="experimental-interface" %}

По умолчанию выключен — можно просто играть в тетрис. В дополнение к двухмерной версии добавлены два объёмных
варианта — *параллельная проекция* и *перспективная проекция* — параметры для каждого из них можно изменять.
Для перспективной проекции: можно изменять положение экрана наблюдателя и удалённость источника проекции.
Наблюдатель смотрит в центр изображения, а центр проекции удалён на расстояние, сопоставимое с размерами
игрового поля. Для параллельной проекции: можно изменять вертикальное положение. Для обеих проекций: можно
поворачивать игровое поле по всем трём осям. Центральная точка для поворотов — это центральная нижняя дальняя
точка поля. Для всех вариантов изображения: размер кубика — 32, размер квадратика — 30 и отступ — 2.
Начало координат расположено в верхней левой точке, оси направлены: `X` вправо, `Y` вниз и `Z` вдаль.

<b>Тестирование:</b> начинаем игру, набираем некоторое количество фигур на поле, ставим игру на паузу,
а затем переключаем варианты объёмного изображения, поворачиваем поле с фигурами, изменяем прозрачность,
двигаем центральную точку и так далее.

<b>Управление:</b> кнопки на клавиатуре со стрелками — вправо, влево, вверх, вниз и кнопка пауза `pause`.

{% include volumetric-tetris-ru.html -%}

{% include heading.html text="Игровой процесс" hash="gaming-process" %}

Игровые очки начисляются за полностью собранные строки из элементов фигур. Количество набранных очков зависит
от количества собранных строк, по 10 очков за каждую строку, если в строке 10 кубиков, и кратно увеличивается,
если одновременно собрано: 2 строки — в 3 раза, 3 строки — в 5 раз, 4 строки — в 10 раз.

<b>Особенность игры:</b> собранные строки сначала моргают и после этого исчезают — при
этом игровой процесс на это время не останавливается — текущая фигура продолжает падать.

Уровень увеличивается при сборе 10 заполненных строк, то есть 100 очков, если в строке 10 кубиков. На каждом
новом уровне скорость фигур увеличивается и на 21 уровне достигает максимума. В режиме улитки увеличение
скорости становится медленнее в 5 раз, и скорость фигур достигает максимума на 104 уровне. Текущая скорость
отображается над игровым полем в виде индикатора `meter`.
